The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs. As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated and complex computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
Years ago, computers were stand-alone devices that did not communicate with each other, but today, computers are increasingly connected in networks and one computer, called a client, may request another computer, called a server, to perform an operation. With the advent of the Internet, this client/server model is increasingly being used in online businesses and services, such as online auction houses, stock trading, banking, commerce, and information storage and retrieval.
With the client/server model comes many challenges. One server may receive requests of differing types from many different clients, and the server may have many applications to process these requests. Further, the type and number of requests that a server receives may change dramatically over time, and one type of request may be frequent while another type may be rare. For example, brokerage clients may send requests to view their account balance and request financial information far more frequently than they send requests to buy or sell stocks, the applications that process these requests may be different, and the volume and type of requests may change dramatically over time. For example, a server will receive far more requests to trade stocks on dates and times when the stock market is open than when it is closed.
Yet, despite the dynamic nature and different types of client requests, organizations often initially configure their servers based on the planned and estimated requirements of their intended customers and users and then do not change the server configuration over time. This results in certain server resources being active and available for use but under-utilized while other server resources are over-utilized, leading to reduced performance, reduced user satisfaction, and increased cost.
Thus, what is needed is a better technique for servers to respond to the dynamic nature of client requests.